An event is a piece of data associated with one or more timestamps. An event stream is a stream of events. An event source can receives events, sort them by timestamp, and provided an ordered event stream. There are various conventional mechanisms to process event streams. Each involves the expression and execution of transformations on the event streams. However, due to the asynchronous nature of events and parallel processing, the streaming domain is naturally complex. Consequently, the learning curve for a new user querying against event streams is conventionally very steep.
Currently, there are two main approaches to expressing data transformations in event processing: domain specific languages (DSL) and general-purpose programming languages (GPPL). DSLs usually take some form of an SQL-like language with additional ability to handle a time dimension. DSLs provide a declarative way to describe the query in high abstractions. Furthermore, DSLs resemble SQL to help reduce the learning curve and enable even non-developers to write queries. The major problems of DSLs are the difficulty with user defined extensions and integration with applications, which is usually written in a GPPL. Writing queries directly in GPPL enables smoother integration with the application that uses the data, but requires the author to know the GPPL.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one exemplary technology area where some embodiments described herein may be practiced